#ifndef __LOGIN_H__
#define __LOGIN_H__
#include <mysql/mysql.h>
#include "cJSON.h"

// 登录相关返回码
typedef enum
{
    LOGIN_SUCCESS = 0,          // 登录成功
    LOGIN_ERROR_USER_NOT_EXIST, // 用户名不存在
    LOGIN_ERROR_PASSWORD,       // 密码错误
    LOGIN_ERROR_DB,             // 数据库错误
    LOGIN_ERROR_EMPTY_INPUT,    // 账号或密码为空
    LOGIN_ERROR_ALREADY_LOGGED  // 已在其他设备登录
} login_code_t;

// 退出登录相关返回码
typedef enum
{
    LOGOUT_STATUS_SUCCESS = 0,            // 退出登录成功
    LOGOUT_STATUS_ERROR_EMPTY_USERID = 1, // 错误：userid为空
    LOGOUT_STATUS_ERROR_DB = 2            // 错误：数据库操作异常
} LogoutStatus;

void handle_login_cmd(client_info_p client, cJSON *root, cJSON *response);
int user_login(client_info_p client, const char *userid, const char *password, const int connfd);
void user_logout(MYSQL *db_conn, const char *userid);
int get_user_online_fd(client_info_p client, const char *userid);

#endif